"""
https://fastapi.tiangolo.com/zh/python-types/
python类型提示学习
"""
from typing import List, Set, Tuple

"""
通过 title() 将每个参数的第一个字母转换为大写形式。
"""
def get_full_name(firstName,lastName):
    full_name = "fullName="+firstName.title() + " " + lastName.title()
    return full_name

print(get_full_name("li","zhen"))

"""
通过指定参数类型后，限制传参,不符合类型会报错 first_name: str:这个冒号是用来声明变量类型

python数据类型：int、str、float、bool
、list（可获取，可修改，有序 [111,3,13,True,3+4j,"abc"]）
、tuple（元组，可获取、不可修改、有序(False,3+4j,"aaa",456)）
、set（无序、不可修改、自动去重 {}）、None
、dict（字典 可获取、可修改 dictvar = {"a1":"123","a2":"234","b1":"345","b2":"456"}
res = dictvar["a2"]）
https://blog.csdn.net/qq_39787513/article/details/106939265 数据类型介绍
"""
def get_full_name2(fist_name: str, last_name: str):
    full_name = "fullName=" + fist_name.title() + " " + last_name.title()
    return full_name

print(get_full_name2("zhang","zhen"))

"""
嵌套类型
items: List[str]  :这个冒号是用来声明变量类型

类型提示（Type Hints）是用于指示函数参数和返回值的预期类型，但它们并不会强制执行类型检查
Python是一种动态类型语言，这意味着变量的类型是在运行时确定的，而不是在编译时确定的。
"""
def process_items(items: List[str]):
    for item in items:
        print(item)

print(process_items(["a1","a2","a3",1]))

def process_items2(items_t:Tuple[int,int,str],items_s:Set[bytes]):
    return items_t,items_s

print(process_items2((1,2,1),{b"123",b"456"}))


"""
类作为类型
类命名首字母用大写
"""
class Person:
    def __init__(self, name: str, age: int):
        self.name = name
        self.age = age

def get_person_name(one_person:Person):
    return one_person.name

print(get_person_name(Person("zhang",23)))


